独習PHP:第4章 制御構文
独習PHP:第4章 制御構文
ネスト
ifの中にifを入れるなど、制御命令同士を入れ子に記述すること
switch, for, whileなどでも共通の意味で使われる
boolの変数を使うとき
true/falseを書くのは冗長なのでなるべく止める
定数条件式
条件式が定数(リテラル)なもののこと
コメントアウトに使うことがある
code:php
if (false) {
// コメントアウトするコードを書く
}
switch文のフォールスルー
case句の末尾にbreak;命令を書かず、続けて実行すること
match式
PHP8.0で追加された、値を返せるswitch文
break命令は不要
複数行の式は書けないので1行で済ませるか、関数を呼び出すか
code:php
$rank = '甲';
$result = match($rank) {
'甲' => 'いいね',
'乙' => '普通だね',
'丙' => 'よくないね',
default => 'うーん'
};
print $result; // いいね
for文
初期化式、継続条件式、増減式で成り立つ
$iなどをカウンター変数(ループ変数)と呼ぶ
カンマ演算子
上3つの式を複数指定できるようになる
code:php
for ($i = 1, $j = 1; $result = $i * $j, $i < 6; $i++, $j++) {
print "{$i} * {$j} = {$result} <br>";
}
/*
1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
4 * 4 = 16
5 * 5 = 25
*/
// 継続条件式で$resultを計算しているが、名前に関わらず自由な式は記述しても良い
// 初期化式: 初回ループのみ 継続条件式: ループのたびに実行される
// 増減式: 2回目以降、ループのたびに実行される
goto命令
移動先にラベルを指定し、そこまで飛ぶことができる
スパゲッティコードの原因となるため、濫用すべきではない
code:php
for ($i = 1; $i < 6; $i++) {
echo "わわわ<br>";
goto end;
}
end :
printf('end先です');
/*
わわわ
end先です // 1周目のループでend:ラベルの先に移動している
*/